#ifndef LOGIC_BASE_H
#define LOGIC_BASE_H

#include <iostream>
#include <string>
#include <vector>
#include <sstream>

#include "Parser.h"
#include "Data.h"
#include "Task.h"
#include "Writer.h"

#include <boost\date_time.hpp>

using namespace std;
using namespace boost::posix_time;
using namespace boost::gregorian;

class LogicBase {
public:
	virtual string execute(Parser::PARSED_COMMAND parsedCommand, 
								vector<Task>& tasksVector,
								Data* _data,
								Writer* _writer) = 0;

	virtual bool isOutOfBounds(int index, int size);

	virtual bool isMultipleMatches(int size);

	// virtual void updateView();

	virtual void copyTasks(vector<Task>& tasks, vector<Task>& tasksVector);

	static const string NOT_FOUND_ERROR_MESSAGE;
	static const string INDEX_OUT_OF_BOUNDS_ERROR_MESSAGE;

private:

};
#endif